$branchCompanyList=$("#branchCompany");
$invoiceManageList=$("#invoiceManage");

$(function () {
    /****
     * 发票开票管理
     * */
    invoiceManageFun()
    /****
     * //分公司开票公司设置
     * */
    branchCompanyFun()




})

/****
 * 发票开票管理
 * */
function indexFormat(value, row, index) {
    return index + 1;
}
function genderOptInv(value, row, index) {
    let html = '';
    html += '<button type="button" class="btn btn-default" id="deletTdInv">删除</button>';

    // html += '<button type="button" class="btn btn-default" id="outOfService">停用</button>';
    if(row.companyStatus==1){
        html += '<button type="button" class="btn btn-default" id="inOfService">启用</button>';
    }else{
        html += '<button type="button" class="btn btn-default" id="outOfService">停用</button>';

    }
    return html
}

function companyStatusHtml(value, row, index) {
    let html = '';
    if(row.companyStatus==1){
        html += '停用';
    }else{
        html += '启用';
    }
    return html;
}
var editInfoInv={
    //删除
    'click #deletTdInv': function(e, value, row, index) {
        let dataCom={
            companyId:row.invoiceCompanyId
        }
        $.confirm({
            title: '提示',
            content: '您确认要删除吗？',
            buttons: {
                ok: {
                    text: '确认',
                    btnClass: 'btn-primary',
                    action: function() {
                        $.ajax({
                            url: '/sysInvoiceCompany/delInvoiceCompany?companyId='+row.invoiceCompanyId,
                            type: 'POST',
                            contentType: "application/json;charset=utf-8",
                            // data:JSON.stringify(dataCom),
                            dataType:"json",
                            success:function (result) {
                                if(result.code=='000000'){
                                    $.alert('删除成功')
                                    $invoiceManageList.bootstrapTable('refresh')
                                }else{
                                    $.alert('删除失败')
                                }
                            },
                            error:function (res) {
                                $.alert('删除失败')
                            }
                        })
                    }
                },
                cancel: {
                    text: '取消',
                    btnClass: 'btn-default'
                }
            }
        })

    },
    //停用
    'click #outOfService': function(e, value, row, index) {
        $.confirm({
            title: '提示',
            content: '您确认要停用吗？',
            buttons: {
                ok: {
                    text: '确认',
                    btnClass: 'btn-primary',
                    action: function() {
                        $.ajax({
                            url: '/sysInvoiceCompany/stopInvoiceCompany?companyId='+row.invoiceCompanyId+"&type="+1,
                            type: 'POST',
                            contentType: "application/json;charset=utf-8",
                            dataType:"json",
                            success:function (result) {
                                if(result.code=='000000'){
                                    $.alert('成功停用')
                                    $invoiceManageList.bootstrapTable('refresh')
                                }else{
                                    $.alert('操作失败')
                                }
                            },
                            error:function (res) {
                                $.alert('操作失败')
                            }
                        })
                    }
                },
                cancel: {
                    text: '取消',
                    btnClass: 'btn-default'
                }
            }
        })
    },
//    启用

    'click #inOfService': function(e, value, row, index) {
        $.confirm({
            title: '提示',
            content: '您确认要启用吗？',
            buttons: {
                ok: {
                    text: '确认',
                    btnClass: 'btn-primary',
                    action: function() {
                        $.ajax({
                            url: '/sysInvoiceCompany/stopInvoiceCompany?companyId='+row.invoiceCompanyId+"&type="+0,
                            type: 'POST',
                            contentType: "application/json;charset=utf-8",
                            dataType:"json",
                            success:function (result) {
                                if(result.code=='000000'){
                                    $.alert('成功启用')
                                    $invoiceManageList.bootstrapTable('refresh')
                                }else{
                                    $.alert('操作失败')
                                }
                            },
                            error:function (res) {
                                $.alert('操作失败')
                            }
                        })
                    }
                },
                cancel: {
                    text: '取消',
                    btnClass: 'btn-default'
                }
            }
        })
    },
}
function invoiceManageFun(){
    $invoiceManageList.bootstrapTable('destroy');
    $invoiceManageList.bootstrapTable({
        //table table-bordered table-hover table-striped
        classes: 'table table-hover table-bordered table-striped',
        url: '/sysInvoiceCompany/selectInvoiceCompanyList',//请求地址
        method: 'post',//请求方式
        contentType: "application/x-www-form-urlencoded",//请求内容类型
        dataType: "json",//数据类型
        striped: false,//是否显示行间隔色
        sortable: false,//是否启用排序
        sortOrder: "desc",//排序方式
        sortName: 'createTm',//排序字段
        cache: false,//是否使用缓存
        showColumns: false,//显示隐藏列
        showRefresh: false,//显示刷新按钮
        showToggle: false,//切换显示样式
        showFooter: false,//显示Table脚部
        pagination: true,//是否显示分页
        showPaginationSwitch: false,//是否显示分页按钮
        clickToSelect: false,//是否启用点击选中行
        singleSelect: false,
        minimumCountColumns: 2,//最少要显示的列数
        undefinedText: '-',//cell没有值时显示
        sidePagination: "server",//分页方式：client客户端分页，server服务端分页
        uniqueId: 'logId',
        idField: 'logId',
        pageSize: 5,//每页的记录行数
        pageNumber: 1,//初始化加载第1页，默认第1页
        pageList: "[10]",//可供选择的每页的行数

        fixedColumns: true,     // 冻结列
        fixedNumber: 1,         // 左侧固定列
        fixedRightNumber: 2,    // 右侧固定列

        queryParams: function (params) {
            params.pageSize = params.limit;
            params.pageIndex = (params.offset / params.limit) + 1;

            // params.bs=0;
            return params;
        },//查询参数
        columns: [
            {title: '主键', field: 'logId', visible: false},
            {title: '序号', field: 'index', align: 'center', valign: 'left', width: '60', formatter: indexFormat},
            {title: '开票公司', field: 'companyName', align: 'left', valign: 'middle'},
            {title: '纳税人识别号', field: 'companyNumber', align: 'left', valign: 'middle'},
            {title: '地址 电话', field: 'addressPhone', align: 'left', valign: 'middle'},
            {title: '开户号 账号', field: 'bankAddressAccount', align: 'left', valign: 'middle'},
            {title: '项目', field: 'project', align: 'left', valign: 'middle'},
            {title: '税盘编号', field: 'taxNumber', align: 'left', valign: 'middle'},
            //
            // {title: '税率', field: 'taxRate', align: 'left', valign: 'middle'},

            {title: '状态', field: 'companyStatus', align: 'left', valign: 'middle',formatter:companyStatusHtml},

            {title: '操作', field: 'operate', align: 'right',events: editInfoInv, formatter:genderOptInv}
        ],
        responseHandler: function (result) {
            if (result.code == "000000") {
                var obj = {
                    "rows": result.data,
                    "total": result.totalRecords//总条数
                };
            } else {
                var obj = {
                    "total": 0,
                    "rows": [],
                }
            }
            return obj;
        },
        onLoadSuccess: function () {

        },
        onLoadError: function (status) {
            if (status == 403) {
                alert("权限不足！禁止访问！");
            } else {
                //加载失败时执行
                alert("加载失败！");
            }
        },
        formatLoadingMessage: function () {
            return "请稍等，加载中...";
        },
        formatNoMatches: function () {
            return '无符合条件的记录';
        },
    });
}

/****
 * //分公司开票公司设置
 * */

function queryParams(params) {
    params.pageSize = params.limit;
    params.pageIndex = (params.offset / params.limit) + 1;
    params.bs = 0;//标识


    return params;
}
/****
 * //分公司开票公司设置
 * */
function genderOptBranch() {
    let html = '';
    html += '<button type="button" class="btn btn-default" id="deletTdBranch">删除</button>';

    return html
}
/****
 * //分公司开票公司设置
 * */
function branchCompanyFun() {
    $branchCompanyList.bootstrapTable('destroy');
    $branchCompanyList.bootstrapTable({
        classes: 'table table-hover table-bordered',
        url: '/issueInvoice/selectIssueInvoiceList',//请求地址
        method: 'post',//请求方式
        contentType: "application/x-www-form-urlencoded",//请求内容类型
        dataType: "json",//数据类型
        striped: false,//是否显示行间隔色
        sortable: false,//是否启用排序
        sortOrder: "desc",//排序方式
        sortName: 'createTm',//排序字段
        cache: false,//是否使用缓存
        showColumns: false,//显示隐藏列
        showRefresh: false,//显示刷新按钮
        showToggle: false,//切换显示样式
        showFooter: false,//显示Table脚部
        pagination: true,//是否显示分页
        showPaginationSwitch: false,//是否显示分页按钮
        clickToSelect: false,//是否启用点击选中行
        singleSelect: false,
        minimumCountColumns: 2,//最少要显示的列数
        undefinedText: '-',//cell没有值时显示
        sidePagination: "server",//分页方式：client客户端分页，server服务端分页
        uniqueId: 'logId',
        idField: 'logId',
        pageSize: 10,//每页的记录行数
        pageNumber: 1,//初始化加载第1页，默认第1页
        pageList: "[10]",//可供选择的每页的行数

        detailView: true,                                       // 父子表
        detailFormatter: detailFormatter,                       // 定义详情显示函数
        detailViewIcon: false,                                  // 隐藏图标列
        detailViewByClick: true,                                // 隐藏图标列

        queryParams: function (params) {
            params.pageSize = params.limit;
            params.pageIndex = (params.offset / params.limit) + 1;
            return params;
        },//查询参数
        columns: [
            {title: '主键', field: 'logId', visible: false},
            {title: '分公司名称', field: 'companyName', align: 'left', valign: 'middle'},
            {title: '操作', field: 'operate', align: 'right',events: editInfoBrach, formatter:genderOptBranch}
        ],
        responseHandler: function (result) {
            if (result.code == "000000") {
                var obj = {
                    "rows": result.data,
                    "total": result.totalRecords//总条数
                };
            } else {
                var obj = {
                    "total": 0,
                    "rows": [],
                }
            }
            return obj;
        },
        onLoadSuccess: function () {

        },
        onLoadError: function (status) {
            if (status == 403) {
                alert("权限不足！禁止访问！");
            } else {
                //加载失败时执行
                alert("加载失败！");
            }
        },
        formatLoadingMessage: function () {
            return "请稍等，加载中...";
        },
        formatNoMatches: function () {
            return '无符合条件的记录';
        },
    });
}


/**
 * 功能：注册加载子表的事件
 * 参数：index:父表当前行的行索引  row:父表当前行的Json数据对象   $detail:当前行下面创建的新行里面的td对象
 * 说明：第三个参数尤其重要，因为生成的子表的table在装载在$detail对象里面的。bootstrap table为我们生成了$detail这个对象，然后我们只需要往它里面填充我们想要的table即可。
 * */

function detailFormatter(index, row, $detail) {
    initSubTable(index, row, $detail);
}
var companyIdModal=''
function sendAjax(id){
    companyIdModal=id
}
//初始化子表格(无线循环)
function initSubTable(index, row, $detail) {
    var customerId = row.customerId;
    // (\''+row.returnMoneyId+'\')
    // row.companyId
    var cur_table = $detail.html('<table id="child_table"><caption><button type="button" class="btn btn-success pull-right" data-toggle="modal" data-target="#billModels" onclick="sendAjax(\''+row.companyId+'\')"><i\n' +
        '                                        class="mdi mdi-plus-circle-outline"  ></i>添加\n' +
        '                                </button></caption></table>').find('table');
    $(cur_table).bootstrapTable({
        classes: 'table table-bordered table-hover table-striped',
        url: '/issueInvoice/selectInvoiceCompanyList',//请求地址
        method: 'post',//请求方式
        contentType: "application/x-www-form-urlencoded",//请求内容类型
        dataType: "json",//数据类型
        striped: true,//是否显示行间隔色
        sortable: true,//是否启用排序
        sortOrder: "desc",//排序方式
        sortName: 'createTm',//排序字段
        cache: false,//是否使用缓存
        showColumns: false,//显示隐藏列
        showRefresh: false,//显示刷新按钮
        showToggle: false,//切换显示样式
        showFooter: false,//显示Table脚部
        pagination: true,//是否显示分页
        showPaginationSwitch: false,//是否显示分页按钮
        clickToSelect: true,                // 是否启用点击选中行
        maintainSelected: true,             // 分页是否保留选中
        singleSelect: false,
        minimumCountColumns: 2,//最少要显示的列数
        undefinedText: '-',//cell没有值时显示
        sidePagination: "server",//分页方式：client客户端分页，server服务端分页
        uniqueId: 'competitorId',
        idField: 'competitorId',
        pageSize: 5,//每页的记录行数
        pageNumber: 1,//初始化加载第1页，默认第1页
        pageList: "[5]",//可供选择的每页的行数
        queryParams: function (params) {
            //这里的键的名字和控制器的变量名必须一直，这边改动，控制器也需要改成一样的
            var temp = {
                pageSize: params.limit,                         //页面大小
                pageIndex: (params.offset / params.limit) + 1,   //页码
                companyId:row.companyId
            };
            return temp;
        },
        columns: [
            {title: '主键', field: 'competitorId', visible: false},
            {checkbox: true, visible: true},
            {title: '开票公司',field: 'issueInvoiceCompanyName',align: 'left', valign: 'middle'},

            {title: '操作', field: 'budgetDirector',  align: 'left', valign: 'middle',
                formatter: function (value, row) {
                    return '<button class="btn btn-default" id="deletSubTable" onclick="deletSubTableFun(\''+row.issueInvoiceId+'\')">删除</button>'
                }
            },
        ],
        responseHandler: function (result) {
            if (result.code == "000000") {
                var obj = {
                    "rows": result.data,
                    "total": result.totalRecords//总条数
                };
            } else {
                var obj = {
                    "total": 0,
                    "rows": [],
                }
            }
            return obj;
        },
        onLoadSuccess: function () {
        },
        onLoadError: function (status) {
            if (status == 403) {
                alert("权限不足！禁止访问！");
            } else {
                //加载失败时执行
                alert("加载失败！");
            }
        },
        formatLoadingMessage: function () {
            return "请稍等，加载中...";
        },
        formatNoMatches: function () {
            return '无符合条件的记录';
        },
        //无线循环取子表，直到子表里面没有记录
        onExpandRow: function (index, row, $Subdetail) {
            initSubTable(index, row, $Subdetail);
        }
    });
};

/**
 * 开票公司table的设置开票公司和删除
 * */
var editInfoBrach = {

    //删除
    'click #deletTdBranch': function(e, value, row, index) {
        $.confirm({
            title: '提示',
            content: '您确认要删除吗？',
            buttons: {
                ok: {
                    text: '确认',
                    btnClass: 'btn-primary',
                    action: function() {
                        $.ajax({
                            url: '/issueInvoice/delCompanyIssueInvoice?companyId='+row.companyId,
                            type: 'POST',
                            dataType:"json",
                            success:function (result) {
                                if(result.code=='000000'){
                                    $.alert('删除成功')
                                    $branchCompanyList.bootstrapTable('refresh')
                                }else{
                                    $.alert('删除失败')
                                }
                            },
                            error:function (res) {
                                $.alert('删除失败')
                            }
                        })
                    }
                },
                cancel: {
                    text: '取消',
                    btnClass: 'btn-default'
                }
            }
        })
    }
}

/***
 * 新增开票公司add
 * */

function addInvoiceCompany() {


    $('.add-invoicing-company').bootstrapValidator({
        excluded: [":disabled"],
        fields: {
            companyName: {
                validators: {
                    notEmpty: {
                        message: '开票公司不能为空'
                    }
                }
            },

            companyNumber: {
                validators: {
                    notEmpty: {
                        message: '纳税人识别号不能为空'
                    }
                }
            },
            addressPhone: {
                validators: {
                    notEmpty: {
                        message: '地址、电话不能为空'
                    }
                }
            },
            bankAddressAccount: {
                validators: {
                    notEmpty: {
                        message: '开户行及账号不能为空'
                    }
                }
            },
            accountProject: {
                validators: {
                    notEmpty: {
                        message: '项目不能为空'
                    }
                }
            },
            // taxRate: {
            //     validators: {
            //         notEmpty: {
            //             message: '税率不能为空'
            //         }
            //     }
            // },
            taxNumber:{
                validators: {
                    notEmpty: {
                        message: '税盘编号不能为空'
                    }
                }
            },

        }
    })

    var bootstrapValidator = $(".add-invoicing-company").data('bootstrapValidator');
    bootstrapValidator.validate();
    if (!bootstrapValidator.isValid()) {
        return;
    }
    let jsonData={
        companyName:$("#companyName").val(),
        companyNumber:$("#companyNumber").val(),
        addressPhone:$("#addressPhone").val(),
        bankAddressAccount:$("#bankAddressAccount").val(),
        project:$("#accountProject").val(),
        // taxRate:$("#taxRate").val(),
        taxNumber:$("#taxNumber").val()
    }
    $.ajax({
        type:"post",
        url:"/sysInvoiceCompany/addInvoiceCompany",
        contentType: "application/json;charset=utf-8",
        data: JSON.stringify(jsonData),
        dataType: 'json',
        async:false,
        success:function (data,status) {
            if(data.code=='000000'){
                $.alert(data.message);
                $("#billingCompanyModels").modal('hide')
                $invoiceManageList.bootstrapTable('refresh')
            }else{
                $.alert(data.message);
            }
        },
        error: (function (res) {
            $.alert("保存失败");
        })
    })


}


function branchNameFun(name) {

    $.getJSON("/company/getCompanyList", function (data) {
        if (data.code == '000000') {
            let companyOptionHtml = '<option value="">请选择</option>';
            data.data.map(function (item) {
                companyOptionHtml += '<option value="' + item.companyId + '">' + item.companyName + '</option>';
            });
            // $('#'+name).html("");
            $('#'+name).html(companyOptionHtml);
            $('#'+name).selectpicker('refresh');
        }
    });
}
branchNameFun('branchName')

function billNameFun(name) {
    let data_bill={
        companyStatus:0
    }
    //JSON.stringify()
    $.ajax({
        type:"post",
        url:"/sysInvoiceCompany/selectInvoiceCompanyList",

        data: data_bill,
        dataType: 'json',
        async:false,
        success:function (data,status) {

            if(data.code=='000000'){
                let billNameOptionHtml = '<option value="">请选择</option>';
                data.data.map(function (item) {
                    billNameOptionHtml += '<option value="' + item.invoiceCompanyId + '">' + item.companyName + '</option>';
                });
                // $('#'+name).html("");
                $('#'+name).html(billNameOptionHtml);
                $('#'+name).selectpicker('refresh');
            }else{
                $.alert(data.message);
            }
        },
        error: (function (res) {
            $.alert("保存失败");
        })
    })
}
// 添加分公司
billNameFun('billName')


function billFunSubmit() {

    $('.branch-form').bootstrapValidator({
        excluded: [":disabled"],
        fields: {
            branchName: {
                validators: {
                    notEmpty: {
                        message: '分公司名称不能为空'
                    }
                }
            },
            billName: {
                validators: {
                    notEmpty: {
                        message: '开票公司不能为空'
                    }
                }
            },
        }
    })
    var bootstrapValidator = $(".branch-form").data('bootstrapValidator');
    bootstrapValidator.validate();
    if (!bootstrapValidator.isValid()) {
        return;
    }
    let branch_data={
        companyId:$("#branchName").val(), //分公司ID
        issueInvoiceCompanyId:$("#billName").val(), //开票公司id

    }
    $.ajax({
        type:"post",
        url:"/issueInvoice/addCompanyIssueInvoice",
        contentType: "application/json;charset=utf-8",
        data: JSON.stringify(branch_data),
        dataType: 'json',
        async:false,
        success:function (data,status) {

            if(data.code=='000000'){
                $.alert(data.message);
                $("#branchModels").modal('hide')
                $branchCompanyList.bootstrapTable('refresh')
            }else{
                $.alert(data.message);
            }
        },
        error: (function (res) {
            $.alert("保存失败");
        })
    })
}

//添加开票公司
billNameFun('billCompany')

function billCompanyFun() {
    $('.bill-form').bootstrapValidator({
        excluded: [":disabled"],
        fields: {

            billCompany: {
                validators: {
                    notEmpty: {
                        message: '开票公司不能为空'
                    }
                }
            },
        }
    })
    var bootstrapValidator = $(".bill-form").data('bootstrapValidator');
    bootstrapValidator.validate();
    if (!bootstrapValidator.isValid()) {
        return;
    }
    let branch_data={
        issueInvoiceCompanyId:$("#billCompany").val(), //开票公司id
        companyId:companyIdModal
    }
    $.ajax({
        type:"post",
        url:"/issueInvoice/addCompanyIssueInvoice",
        contentType: "application/json;charset=utf-8",
        data: JSON.stringify(branch_data),
        dataType: 'json',
        async:false,
        success:function (data,status) {

            if(data.code=='000000'){
                $.alert(data.message);
                $("#billModels").modal('hide')
                // $branchCompanyList.bootstrapTable('refresh')
                $("#child_table").bootstrapTable('refresh');
            }else{
                $.alert(data.message);
            }
        },
        error: (function (res) {
            $.alert("保存失败");
        })
    })
}

function deletSubTableFun(issueInvoiceId) {
    $.confirm({
        title: '提示',
        content: '您确认要删除吗？',
        buttons: {
            ok: {
                text: '确认',
                btnClass: 'btn-primary',
                action: function() {
                    $.ajax({
                        url: '/issueInvoice/delIssueInvoice?issueInvoiceId='+issueInvoiceId,
                        type: 'POST',
                        contentType: "application/json;charset=utf-8",
                        dataType:"json",
                        success:function (result) {
                            if(result.code=='000000'){
                                $.alert('删除成功')
                                $("#child_table").bootstrapTable('refresh');
                            }else{
                                $.alert('删除失败')
                            }
                        },
                        error:function (res) {
                            $.alert('删除失败')
                        }
                    })
                }
            },
            cancel: {
                text: '取消',
                btnClass: 'btn-default'
            }
        }
    })
}


